diff --git a/swh/web/common/swh_templatetags.py b/swh/web/common/swh_templatetags.py index 0cdcbee71..43ca39411 100644 --- a/swh/web/common/swh_templatetags.py +++ b/swh/web/common/swh_templatetags.py @@ -1,92 +1,82 @@ # Copyright (C) 2017 The Software Heritage developers # See the AUTHORS file at the top-level directory of this distribution # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information import re from docutils.core import publish_parts from docutils.writers.html4css1 import Writer, HTMLTranslator from inspect import cleandoc from django import template -from django.utils.safestring import mark_safe - -from pygments import highlight -from pygments.lexers import JsonLexer -from pygments.formatters import HtmlFormatter register = template.Library() class NoHeaderHTMLTranslator(HTMLTranslator): """ Docutils translator subclass to customize the generation of HTML from reST-formatted docstrings """ def __init__(self, document): super().__init__(document) self.body_prefix = [] self.body_suffix = [] def visit_bullet_list(self, node): self.context.append((self.compact_simple, self.compact_p)) self.compact_p = None self.compact_simple = self.is_compactable(node) self.body.append(self.starttag(node, 'ul', CLASS='docstring')) DOCSTRING_WRITER = Writer() DOCSTRING_WRITER.translator_class = NoHeaderHTMLTranslator @register.filter def safe_docstring_display(docstring): """ Utility function to htmlize reST-formatted documentation in browsable api. """ docstring = cleandoc(docstring) return publish_parts(docstring, writer=DOCSTRING_WRITER)['html_body'] @register.filter def urlize_api_links(text): """Utility function for decorating api links in browsable api. Args: text: whose content matching links should be transformed into contextual API or Browse html links. Returns The text transformed if any link is found. The text as is otherwise. """ text = re.sub(r'(/api/[^"<]*/|/browse/.*/|http.*$)', r'\1', text) return re.sub(r'([^ <>"]+@[^ <>"]+)', r'\1', text) @register.filter def urlize_header_links(text): """Utility function for decorating headers links in browsable api. Args text: Text whose content contains Link header value Returns: The text transformed with html link if any link is found. The text as is otherwise. """ return re.sub(r'<(/api/.*|/browse/.*)>', r'<\1>', text) - - -@register.filter -def highlight_json(text): - return mark_safe(highlight(text, JsonLexer(), HtmlFormatter())) diff --git a/swh/web/templates/apidoc.html b/swh/web/templates/apidoc.html index 07cd69e60..55d9ae11b 100644 --- a/swh/web/templates/apidoc.html +++ b/swh/web/templates/apidoc.html @@ -1,139 +1,149 @@ {% extends "layout.html" %} {% load swh_templatetags %} +{% load static %} {% block title %}{{ heading }} – Software Heritage API {% endblock %} +{% block header %} + + + +{% endblock %} {% block content %} {% if docstring %}
{{ request.method }} {{ request.build_absolute_uri }}
{{ status_code }}{% endif %} {% if headers_data %}
{{ header_name }} {{ header_value | urlize_header_links | safe }}{% endfor %} {% endif %}
+ {{ response_data | urlize_api_links | safe }}
+
URL | Allowed Methods |
---|---|
{{ url.rule }} | {{ url.methods | dictsort:0 | join:', ' }} |
{{ content }}